package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.pojo.dto.PetOrdersQueryDto;
import com.example.pojo.entity.PetOrders;
import com.example.pojo.vo.PetOrdersQueryVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.List;

/**
 * 宠物订单 mapper 层
 */
@Mapper
public interface PetOrdersMapper extends BaseMapper<PetOrders> {

    /**
     * 分页宠物订单
     *
     * @param pageObject MybatisPlus 分页对象
     * @param dto 条件
     * @return 分页结果
     */
    IPage<PetOrdersQueryVo> pageQuery(@Param("page") IPage<PetOrdersQueryVo> pageObject, @Param("dto") PetOrdersQueryDto dto);

    /**
     * 根据条件査询宠物订单
     *
     * @param dto 条件
     * @return 宠物订单列表
     */
    List<PetOrdersQueryVo> query(@Param("dto") PetOrdersQueryDto dto);


    /**
     * 根据宠物店id，计算宠物销售额
     *
     * @param shopId 宠物店id
     * @return 宠物销售额
     */
    @Select("select ifnull(sum(pet_orders.price), 0) from pet_orders where pet_orders.shop_id = #{shopId} and pet_orders.status = '已完成'")
    BigDecimal countAmountByShopId(@Param("shopId") Integer shopId);

    /**
     * 统计宠物销售额
     *
     * @param shopId 宠物店id
     * @param start 开始时间
     * @param end 结束时间
     * @return 宠物销售额
     */
    BigDecimal countSale(@Param("shopId") Integer shopId, @Param("start") String start, @Param("end") String end);
}
